package fr.univ.projet;

import java.util.ArrayList;
import java.util.List;

/**
 * 
 * @author chris
 */
public class Grille
{
    // Numéro permettant d'identifier de manière unique la grille
    private int code;
    // Jeu sur lequel se porte la grille
    private Jeu jeu;
    // Liste des numéros choisis
    private List<Numero> numerosChoisis;
    // Mise pour la grille
    private float mise;
    // Permet de savoir à qui appartient la grille
    private Joueur joueur;
    
   
    /**
     * Initialisation d'une grille
     * 
     * @param pCode numéro de la grille
     * @param pJeu jeu de la grille
     * @param pJoueur joueur faisant cette grille
     */
    public Grille(int pCode, Jeu pJeu, Joueur pJoueur)
    {
        this.code = pCode;
        this.jeu = pJeu;
        this.numerosChoisis = new ArrayList<Numero>();
        this.joueur = pJoueur;
    }
    
    /**
     * 
     * @return le numéro unique de la grille
     */
    public int getCode()
    {
        return code;
    }

    /**
     * 
     * @return le jeu de la grille
     */
    public Jeu getJeu()
    {
        return jeu;
    }

    /**
     * 
     * @return la liste des numéros choisis
     */
    public List<Numero> getNumerosChoisis()
    {
        return numerosChoisis;
    }

    /**
     * 
     * @return la mise de la grille
     */
    public float getMise()
    {
        return mise;
    }
    
    /**
     * 
     * @return les gains de la grille
     */
    public float getGains()
    {
        return getJeu().calculGainsGrille(this);
    }
    
    /**
     * 
     * @return le nombre de numéro chance dans les numéros choisis
     */
    public int getNbreChance()
    {
        int nb = 0;
        
        for(Numero num : numerosChoisis)
        {
            if ( num.isChance() )
                nb++;
        }
        
        return nb;
    }
        
    /**
     * 
     * @return le nombre de numero simple dans les numéros choisis
     */
    public int getNbreSimple()
    {
        int nb = 0;
        
        for(Numero num : numerosChoisis)
        {
            if ( !num.isChance() )
                nb++;
        }
        
        return nb;
    }
    
    /**
     * 
     * @return le numéro chance
     */
    public Numero getNumeroChance()
    {
        Numero chance = null;
        
        for( Numero num : numerosChoisis )
        {
            if ( num.isChance())
                chance = num;
        }
        
        return chance;
    }

    /**
     * 
     * @return le joueur ayant fait la grille
     */
    public Joueur getJoueur()
    {
        return joueur;
    }
    
    /**
     * Enregistre la mise de la grille
     * 
     * @param pMise mis de la grille
     */
    void setMise(float pMise) 
    {
        this.mise = pMise;
    }

    @Override
    public String toString() {
        return "Grille n°" + code + " (" + jeu.toString() + ")";
    }
}
